"""
常用的组件，如：
1、文字标签（QLabel）
2、文本编辑（QLineEditor、QPlainTextEditor）
3、勾选（QCheckBox，QComboBox）
"""

import sys
from typing import Optional
from PySide6.QtWidgets import QApplication, QCheckBox, QComboBox, QLineEdit, QPlainTextEdit, QPushButton, QRadioButton, QVBoxLayout, QWidget


class MultiWidget(QWidget):
    """
    常用的组件
    """
    def __init__(self, parent: Optional[QWidget] = None) -> None:
        super().__init__(parent=parent)
        self.__init_widget()
        self.__init_layout()

    def __init_widget(self):
        self.push_button = QPushButton("单击按钮", self)
        self.line_editor = QLineEdit(self)
        self.plain_line_editor = QPlainTextEdit(self)
        self.checkbox = QCheckBox("允许显示", self)
        self.radio_button = QRadioButton("radio", self)
        self.combobox = QComboBox(self)
        self.combobox.addItem("a")
        self.combobox.addItems(["b", "c", "d"])

    def __init_layout(self):
        hbox = QVBoxLayout()
        hbox.addWidget(self.push_button)
        hbox.addWidget(self.line_editor)
        hbox.addWidget(self.plain_line_editor)
        hbox.addWidget(self.checkbox)
        hbox.addWidget(self.radio_button)
        hbox.addWidget(self.combobox)
        self.setLayout(hbox)

if __name__ == "__main__":
    app = QApplication(sys.argv)        # 主流程控制，一个程序只能有一个QApplication，sys可以用于命令行导入
    window = MultiWidget()
    window.show()
    sys.exit(app.exec())               # 控制程序安全退出


